package com.chapter3decode;

public class ByteArray {

	public static void main(String[] args) {
		int i = 130;
		int i2 = -130;
		byte ib = (byte)i;
		//java采用补码存储整数，int型为32位二进制，byte为8位二进制
		//那么130在内存中的表示形式：00000000 00000000 00000000 10000010
		//这样截取后8位就变成10000010，补码表示的时候第一位是符号位，0正1负，所以可以知道10000010肯定是一个负数，
		//再来看它的数值部分，补码由正数变负数，还是正数变负，方法：“按位取反，再加1”，所以后7位：0000010应该变为1111101 + 1 = 1111110(即126)
		//又因为是负数，所以就截取变成-126了
		System.out.println(ib);
		byte ib2 = (byte)i2;
		//-130的例子(符号位是1，其余按位取反+1)
		//-130在内存中的表示形式：11111111 11111111 11111111 01111110
		//这样截取后8位就变成01111110，显然这是整数啊，然后数值部分是126
		//64+32+16+8+4+2=126
		System.out.println(ib2);
	}

}
